package gestorbienraizok.inmuebles;

import java.util.LinkedList;
import static uiMain.bienRaizOk.convertirBooleano;

public class Unidad {

    int codigo;
    String nombre;
    String direccion;
    byte estrato;
    private boolean cerrada;
    private boolean tieneServiciosAdicionales;
    LinkedList<Torre> listaDeTorres;
    LinkedList<Casa> listaDeCasas;
    ServiciosAdicionales serviciosAdicionales;

    public Unidad(int codigo, String nombre, String direccion, byte estrato, boolean cerrada, ServiciosAdicionales serviciosAdicionales) {
        this.cerrada = cerrada;
        this.codigo = codigo;
        this.nombre = nombre;
        this.direccion = direccion;
        this.estrato = estrato;
        this.listaDeTorres = new LinkedList();
        this.listaDeCasas = new LinkedList();
        this.serviciosAdicionales = serviciosAdicionales;
    }

    public int getCodigo() {
        return this.codigo;
    }

    public String getNombre(){
        return this.nombre;
    }
    public String getDireccion() {
        return this.direccion;
    }

    public byte getEstrato() {
        return this.estrato;
    }

    public LinkedList<Torre> getListaDeTorres() {
        return this.listaDeTorres;
    }

    public LinkedList<Casa> getListaDeCasas() {
        return this.listaDeCasas;
    }

    public int getNumeroDeCasas() {
        return this.listaDeCasas.size();
    }

    public int getNumeroDeApartamentos() {
        int total = 0;
        for (int i = 0; i < this.listaDeTorres.size(); i++) {
            Torre estaTorre = this.listaDeTorres.get(i);
            total += estaTorre.getNumeroDeApartamentos();
        }
        return total;
    }

    public void agregarTorre(Torre torre) {
        this.listaDeTorres.add(torre);
    }

    public void agregarCasa(Casa casa) {
        this.listaDeCasas.add(casa);
    }

    @Override
    public String toString() {
        String descripcion = new String();
        descripcion += "Código:       " + this.codigo + "\n";
        descripcion += "Nombre:       " + this.nombre + "\n";
        descripcion += "Dirección:    " + this.direccion + "\n";
        descripcion += "Estrato:      " + this.estrato + "\n";
        descripcion += "Cerrada:      " + convertirBooleano(this.cerrada) + "\n\n";
        if (this.cerrada && this.serviciosAdicionales != null) {
            descripcion += this.serviciosAdicionales.toString();
        }
        return descripcion;
    }
}
